package com.wydexcel.generate.process;

import com.wydexcel.generate.properties.s.ExcelLinkProperties;
import org.apache.poi.common.usermodel.HyperlinkType;
import org.apache.poi.ss.usermodel.*;

import java.util.HashMap;
import java.util.Map;

public class WydExcelCellLinkerProcessImpl implements WydExcelCellLinkerProcess {

    private Map<String, Hyperlink> map = new HashMap<>();

    @Override
    public Hyperlink linkerProcess(Row row, Cell cell, ExcelLinkProperties property, boolean isBody) {


        if (null == property) {
            return null;
        }
        if (isBody && property.getIsHeader() == 1) {
            return null;
        }
        if (!isBody && property.getIsHeader() == 2) {
            return null;
        }
        String key = property.getFieldName() + property.getIsHeader();

        if (null == map.get(key)) {
            Workbook workbook = row.getSheet().getWorkbook();
            CreationHelper creationHelper = workbook.getCreationHelper();
            HyperlinkType hyperlinkType = property.getHyperlinkType();
//            Hyperlink hyperlink = new XSSFHyperlink(property.getHyperlinkType());
            Hyperlink hyperlink = creationHelper.createHyperlink(property.getHyperlinkType());
            hyperlink.setAddress(property.getLink());
            cell.setHyperlink(hyperlink);
            map.put(key, hyperlink);
            return null;
        }
        map.put(key, map.get(key));

        return null;
    }


//    private void test(Workbook wb) {
//        CellStyle hlink_style = wb.createCellStyle();
//        Font hlink_font = wb.createFont();
//        hlink_font.setUnderline(Font.U_SINGLE);
//        hlink_font.setColor(IndexedColors.BLUE.getIndex());
//        hlink_style.setFont(hlink_font);
//
//        Cell cell;
//        Sheet sheet = wb.createSheet("Hyperlinks");
//        //URL
//        cell = sheet.createRow(0).createCell(0);
//        cell.setCellValue("URL Link");
//
//        Hyperlink link = createHelper.createHyperlink(HyperlinkType.URL);
//        link.setAddress("https://poi.apache.org/");
//        cell.setHyperlink(link);
//        cell.setCellStyle(hlink_style);
//
//        //link to a file in the current directory
//        cell = sheet.createRow(1).createCell(0);
//        cell.setCellValue("File Link");
//        link = createHelper.createHyperlink(HyperlinkType.FILE);
//        link.setAddress("link1.xls");
//        cell.setHyperlink(link);
//        cell.setCellStyle(hlink_style);
//
//        //e-mail link
//        cell = sheet.createRow(2).createCell(0);
//        cell.setCellValue("Email Link");
//        link = createHelper.createHyperlink(HyperlinkType.EMAIL);
//        //note, if subject contains white spaces, make sure they are url-encoded
//        link.setAddress("mailto:poi@apache.org?subject=Hyperlinks");
//        cell.setHyperlink(link);
//        cell.setCellStyle(hlink_style);
//
//        //link to a place in this workbook
//
//        //create a target sheet and cell
//        Sheet sheet2 = wb.createSheet("Target Sheet");
//        sheet2.createRow(0).createCell(0).setCellValue("Target Cell");
//
//        cell = sheet.createRow(3).createCell(0);
//        cell.setCellValue("Worksheet Link");
//        Hyperlink link2 = createHelper.createHyperlink(HyperlinkType.DOCUMENT);
//        link2.setAddress("'Target Sheet'!A1");
//        cell.setHyperlink(link2);
//        cell.setCellStyle(hlink_style);
//    }
}
